#ifndef RULE_SEARCHER_HPP_GUARD
#define RULE_SEARCHER_HPP_GUARD

#include "visitor.hpp"
#include "rule.hpp"
		
namespace mashine { namespace kb { namespace search {

/**
 * this class provice interface that need realize to 
 * execute your own search way
 */
class RulesSearchVisitor : public SearchVisitor<mashine::kb::Rule *, mashine::kb::Literal>
{
public: 
	/**
	 * create visitor that search facts with specified name
	 * by default name = * (select all facts)
	 */
	RulesSearchVisitor(mashine::kb::Literal l);
	
	/**
	 * get array of facts selected from kBase
	 */
	virtual std::vector<mashine::kb::Rule *> search(mashine::kb::KnowledgeBase * kBase);
};

}}}

#endif